leetcodeJS

Personal solution for leetcode problem using Javascript

View on GitHub

Problem

Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array.

Example 1:

Input:

  3
 / \
9  20
  /  \
 15   7

Output: [3, 14.5, 11]

Explanation:

The average value of nodes on level 0 is 3, on level 1 is 14.5, and on level 2 is 11. Hence return [3, 14.5, 11].

Note:

The range of node’s value is in the range of 32-bit signed integer.

Pre analysis

Will keep an array of array of elements at each level and return sum of level/count on that level

Post analysis

Either of BFS/DFS should do

Another solution

var averageOfLevels = function(root) {
    let q = root ? [root] : [], output = [];
    while(q.length) {
        let size = q.length;
        let sum = 0;
        for(let i = 0; i < size; i++) {
            let node = q.shift();
            sum += node.val;
            node.left && q.push(node.left);
            node.right && q.push(node.right);
        }
        output.push(sum/size);
    }
    return output;
};